@局外人
2年前 提问
1个回答

水平越权漏洞产生原因有哪些

在下炳尚
2年前

水平越权漏洞产生原因有以下这些:

  • 通过隐藏URL:实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用URL实现访问控制,但URL泄露或被恶意攻击者猜到后,这会导致越权攻击。

  • 直接对象引用:这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面URL后加上自己的id便可查看,当修改为他人的ID号时会返回他人的信息,便产生了水平越权。

  • 多阶段功能:多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。

  • 静态文件:很多网站的下载功能,一些被下载的静态文件,例如pdf、word、xls等,可能只有付费用户或会员可下载,但当这些文件的URL地址泄露后,导致任何人可下载,如果知道URL命名规则,则会便利服务器的收费文档进行批量下载。

  • 平台配置错误:一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。

防范措施如下:

  • 前后端同时对用户输入信息进行校验,双重验证机制;

  • 调用功能前验证用户是否有权限调用相关功能;

  • 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限;

  • 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理;

  • 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤。